﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Aeroporto.bd;
using Aeroporto.modelo;
using System.Collections;

namespace Aeroporto.controle
{
    class DisponibilizaControl 
    {
        private DisponibilizaDAO bd_disponibiliza = new DisponibilizaDAO();

        public DataTable lista_dados(string tabela)
        {
            DataTable datatable = new DataTable();
            try
            {
                datatable = bd_disponibiliza.lista_dados(tabela);
            }
            catch (Exception erro)
            {
                Arquivo.escrever(erro.ToString());
            }
            return datatable;
        }

        public DataTable pesquisar_data(string data)
        {
            DataTable datatable = new DataTable();

            try
            {
                datatable = bd_disponibiliza.pesquisar("disponibiliza", "data_viagem", data);
            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }

        public MyMessageBox exclui_reserva(ArrayList chaves_primarias)
        {            
            return bd_disponibiliza.excluir(chaves_primarias);
        }

        public MyMessageBox valida_insert_disponibiliza(string fila, string numero, string cod_aeronave, string data_viagem, string id_trecho, string reserva)
        {
            MyMessageBox mb = valida_disponibiliza(fila, numero, cod_aeronave, data_viagem, id_trecho);
            if (mb != null)
            {
                return mb;
            }
            else
            {                                           
                int num = int.Parse(numero);
                int trecho = int.Parse(id_trecho);
                int res=0;
                try
                {
                    res = int.Parse(reserva);
                }
                catch (Exception e)
                {
                    Arquivo.escrever(e.ToString());
                }

                IGenericModel generic_model = new DisponibilizaModel(fila, num, cod_aeronave, data_viagem, trecho, res);

                if (bd_disponibiliza.gravar_dados(generic_model))
                {
                    mb = new MyMessageBox("Disponibiliza cadastrada com sucesso.", "OK.:");                    
                }
                else
                {
                    mb = new MyMessageBox("Erro ao cadastrar.", "Erro ao cadastrar.:");
                }
                
                return mb;
            }
        }

        private modelo.MyMessageBox valida_disponibiliza(string fila,string numero,string cod_aeronave,string data_viagem,string id_trecho)
        {
 	        if (fila == "" || numero == "" || cod_aeronave == "" || data_viagem == "" || id_trecho == "")
            {
                return new MyMessageBox("Preencha todos os campos.", "Atenção campo não preenchido.:");
            }
            else
                if (bd_disponibiliza.existe_registro(fila, numero, cod_aeronave, data_viagem, id_trecho) == true)
                {
                    return new MyMessageBox("Já existe disponibiliza com estes dados.", "Disponibiliza já existente.:");
                }
                else
                {
                    return null;
                }
        }

        public MyMessageBox valida_update_disponibiliza(string fila, string numero, string cod_aeronave, string data_viagem, string id_trecho, string cod_reserva, ArrayList chave_primaria_antiga)
        {
            if (fila == "" || numero == "" || cod_aeronave == "" || data_viagem == "" || id_trecho == "")
            {
                return new MyMessageBox("Campos obrigatórios não preenchidos.", "Atenção campo não preenchido.:");
            }
            else            
            {

                if (fila != chave_primaria_antiga[0].ToString() || numero != chave_primaria_antiga[1].ToString() || cod_aeronave != chave_primaria_antiga[2].ToString() || data_viagem != chave_primaria_antiga[3].ToString().Substring(0,10) || id_trecho != chave_primaria_antiga[4].ToString())
                {                    
                    return new MyMessageBox("Campos obrigatórios não podem ser alterados","Atenção.: DADOS NÃO ATUALIZADOS!");
                }                                

                int num = int.Parse(numero);
                int trecho = int.Parse(id_trecho);
                int res=0;
                try
                {
                    res = int.Parse(cod_reserva);
                }
                catch (Exception e)
                {
                    Arquivo.escrever(e.ToString());
                }

                DisponibilizaModel disponibiliza = new DisponibilizaModel(fila, num, cod_aeronave, data_viagem, trecho, res);

                if (bd_disponibiliza.update_dados(disponibiliza))
                {
                    return new MyMessageBox("Disponibiliza atualizada com sucesso.", "OK.:");
                }
                else
                {
                    return new MyMessageBox("Erro ao atualizar dados. Verifique se existe uma reserva cadastrada com o código informado.", "Erro ao atualizar.:");
                }
            }
        }

        public MyMessageBox valida_update_disponibiliza(string fila, string numero, string cod_aeronave, string data_viagem, string id_trecho, string cod_reserva)
        {
            int num = int.Parse(numero);
            int trecho = int.Parse(id_trecho);
            int res = 0;
            try
            {
                res = int.Parse(cod_reserva);
            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }

            DisponibilizaModel disponibiliza = new DisponibilizaModel(fila, num, cod_aeronave, data_viagem, trecho, res);

            if (bd_disponibiliza.update_dados(disponibiliza))
            {
                return new MyMessageBox("Reserva cadastrada com sucesso.", "OK.:");
            }
            else
            {
                return new MyMessageBox("Erro ao atualizar dados. Verifique se existe uma reserva cadastrada com o código informado ou se a data da viagem já passou.", "Erro ao atualizar.:");
            }
        }
    }
}
